iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
AI & Data

關於我轉生變成AI詠唱師這檔事系列 第 18

魔法流量的控制:如何巧妙應對流量限制

  • 分享至 

  • xImage
  •  

在這個充滿魔法的異世界中,我們的魔法能量來源——OpenAI API,有時會遇到一些流量限制的問題。當我們過於頻繁地呼喚魔法能量時,會收到429: 'Too Many Requests' 或 RateLimitError 的錯誤訊息。這是因為我們超出了API的流量限制。為了避免這種情況的發生,我們需要學會如何巧妙地應對流量限制。

為何存在流量限制?

流量限制是API的一種常見做法,主要有三個原因:

  1. 防止濫用:流量限制可以防止惡意行為者通過大量請求來嘗試過載API或中斷服務。
  2. 公平使用:通過限制單一用戶的請求次數,確保所有人都能公平地使用API,避免某一用戶的過多請求影響其他人的使用。
  3. 管理負載:流量限制可以幫助OpenAI管理其基礎架構的總負載,避免性能問題。

如何避免流量限制錯誤?

一種簡單的方法是使用自動重試請求。這意味著當遇到流量限制錯誤時,應該短暫休眠,然後重試未成功的請求。如果請求仍然不成功,則增加休眠時間並重複該過程。

這種方法有很多好處:

  • 自動重試可以在不丟失數據的情況下恢復流量限制錯誤。
  • 指數退避意味著你的第一次重試可以迅速進行,同時如果前幾次重試失敗,仍可受益於更長的延遲。

例子:使用Tenacity庫

import openai
from tenacity import retry, stop_after_attempt, wait_random_exponential

@retry(wait=wait_random_exponential(min=1, max=60), stop=stop_after_attempt(6))
def completion_with_backoff(**kwargs):
    return openai.Completion.create(**kwargs)

completion_with_backoff(model="text-davinci-002", prompt="Once upon a time,")

批處理請求

如果你的請求次數達到了上限,但仍有更多的 token 可用,你可以通過將多個任務批量到每個請求中來增加吞吐量。

import openai

num_stories = 10
prompts = ["Once upon a time,"] * num_stories

response = openai.Completion.create(model="curie", prompt=prompts, max_tokens=20)

上一篇
異世界的知識儲藏:從大數據中提取知識精粹
下一篇
讓施法更加容易的魔杖 - LangChain
系列文
關於我轉生變成AI詠唱師這檔事31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言